﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GraphLibrary
{
    public interface IUndirectedGraph<TVertex, TEdge> : IGraph<TVertex, TEdge>
        where TEdge : IEdge<TVertex>
    {
        new IEnumerable<TVertex> AdjacentVertices(TVertex vertex);

        new void AddEdge(TEdge edge);

        new void AddEdges(IEnumerable<TEdge> edges);

        new void RemoveEdge(TEdge edge);

        new void RemoveEdge(TVertex source, TVertex destination);

        new void RemoveEdges(IEnumerable<TEdge> edges);

        new double[,] ToAgencyMatrix(Func<TEdge, double> weight);
    }
}
